れさぴょん for Java ReadMe.txt 機能の説明 ・ソースの取り出し方 ダウンロードした、lesserpyon.jarファイルに対して、 jar xvf lesserpyon.jar を実行することで、ソースコードと簡単な説明も含めて、コンパイル済みのクラスファイルが展開されます。 コンパイル方法 展開したソースコードはSJISで書かれています。 SJISがメインでない環境では、 ・文字コード変換を行う ・javac -encoding SJIS jp/usapyonsoft/lesserpyon/*.java のようにして、encodingを指定してコンパイルする の対処を行ってください。 Javaのバージョン JDK 1.2/1.3/1.4/1.5では、コンパイル及び動作の確認をしています。 ただし、Java1.5以降では、以下のようなWarningが出ます。 注:入力ファイルの操作のうち、未チェックまたは安全ではないものがあります。 注:詳細については、-Xlint:unchecked オプションを指定して再コンパイルしてください。 原因は分かっていますが、1.4以前との互換性のため、当方では修正予定がありません。悪しからずご了承下さい。 機能の説明 Constantsインターフェース 定数の定義です。 Komaクラス 駒をあらわすための定数を定義したクラスです。 また、駒種の判別なども行います。 GenerateMovesクラス 手の生成に関するクラスです。 合法手の生成と、手の評価などを行います。 TTEntryクラス 局面表にしまうデータです。 評価値や、その評価を得た深さ、残り深さ、最善手などを保持します。 TranspositionTableクラス 局面表です。 Teクラス 将棋の指し手を表すクラスです。 動かした駒・取った駒・移動元・移動先・手の価値などの属性を持ちます。 Kyokumenクラス 基本的な局面を表すクラスです。 ・手による局面の変化 move  ・局面をハッシュ表にしまうためのハッシュ値の更新  ・ハッシュ値は、盤面のハッシュ値と持ち駒のハッシュ値を別々に保持しています。  ・基本的な駒の価値による、評価値の差分更新 ・手による局面の変化 back  ・局面をハッシュ表にしまうためのハッシュ値の更新  ・ハッシュ値は、盤面のハッシュ値と持ち駒のハッシュ値を別々に保持しています。  ・基本的な駒の価値による、評価値の差分更新 ・コピーするための関数 clone ・その他、CSA形式棋譜から読み込むための関数など。 KyokumenKomagumiクラス 駒組みに一定のボーナス点を与えたり、攻め合いになっているかどうかを判定するなど、Kyokumenの評価機能を改良したクラスです。 ・局面の評価を行います。  ・攻め合いになっているかどうかを自陣内・敵陣内の駒から判定します。  ・終盤度という概念を持ち、終盤近くになると、玉との駒との相対位置を大きく評価します。  ・駒の位置に一定のボーナス点を与え、矢倉や美濃囲いなどの駒組みをプラスに判定します。 Josekiクラス うさぴょんと同じ形式の定跡ファイルを用いて、局面が一致している場合に、そこで指された手を乱数で選択して返します。 定跡データの生成には、うさぴょんの定跡データ生成プログラムを利用してください。 Playerインターフェース 次の一手を返すインターフェースです。 Human,Sikou,Lanがこのインターフェースをインプリメントしています。 Sikouクラス 局面駒組みクラスを用いて、多重反復深化αβ法により、思考を行います。 また、思考が終わった後、スレッドを起こし、予想した次の相手の手を元に、先読みを行います。 Humanクラス 手の入力形式は、移動元2桁+移動先2桁+成る場合には* です。 例えば、1手目76歩は、 7776 のようになります。 駒を打つ場合には、移動元に、歩01 香02 桂03 銀04 金05 角06 飛07を入力して下さい。 CsaProtocolクラス TCP/IP版CSAプロトコルv1.1を実装しているクラスです。 途中局面からの開始機能には、まだバグがあるかも知れません…。 Lanクラス CsaProtocolクラスを用いて、相手の次の一手を得るクラスです。 Mainクラス 対局のメインルーチンです。 第一引数として、先手がHUMAN,LAN,CPUのいずれかを、 第二引数として、後手がHUMAN,LAN,CPUのいずれかを与えることが出来ます。 (ただし、両方をLANとすることは出来ません。) LAN対局の場合、先後が与えたパラメータと入れ替わることがあります。 LANの場合のパラメータ(ログイン先、プログラム名、パスワード等)はハードコーディングされています。 LAN対局時には、必ず書き換えて使用して下さい。 ダウンロードした「れさぴょん for Java」を使用する前に、以下をお読み下さい。 使用許諾条件 以下の条件に同意する方にのみ、れさぴょん for Javaの使用を許可します。 ・れさぴょん for Javaの著作権は作者(池泰弘)が保有します。 ・れさぴょん for Javaの使用によるいかなる損害に対しても、作者は責任を負いません。 ・動作しないなどの各種の問い合わせに対して、作者は返答の義務を負いません。また、アップデートやバグ修正の義務も負いません。 ・れさぴょん for Javaの再配布は、作者の名誉を毀損することなく、商業利用が目的でない場合に限り、許可します。 ・再配布の際に、自分で思考ルーチンを強化したり、GUIを強化したりして、バイナリとして配布することも、上記の条件に反しない限り、許可します。 ・もちろん、このソースを元に強化したプログラムで、世界コンピュータ将棋選手権など各種大会に参加することも自由です。ただし、全く思考ルーチンを改良しないで参加する事はご遠慮下さい。